package paquete;

import java.util.ArrayList;

public class Procesos {

	ArrayList<Libro>listaLibros;
	ArrayList<Estudiante>listaEstudiantes;
	ArrayList<Familia>listaFamilia;
	ArrayList<Colega>listaColega;


	
	public Procesos()
	{
		listaLibros=new ArrayList<Libro>();
		listaEstudiantes=new ArrayList<Estudiante>();
		listaFamilia=new ArrayList<Familia>();
		listaColega=new ArrayList<Colega>();
	}//fin del contructor
	
	
	public String agregarEstudiante(Estudiante estudiante)
	{
		boolean verificar=false;
		String salida="";
		if (listaEstudiantes==null) {
			listaEstudiantes.add(estudiante);
		}else
		{
			for (int i = 0; i < listaEstudiantes.size(); i++) {
				
				if (listaEstudiantes.get(i).getNombre()==estudiante.getNombre()&&listaEstudiantes.get(i).getCarnet()==estudiante.getCarnet()) {
					verificar=true;
				}
				
			}//fin del for
			
			if (verificar==true) {
				
				salida="Ya existe un estudiante con esos datos";
			}
			else{
				
				listaEstudiantes.add(estudiante);
				salida="El estudiante se guardo de manera exitosa";
			}
				
			
		}//fin del else
		
		
		return salida;
	}//fin del metodo agregarPersona
	
	
	
	
	public String agregarColega(Colega colega)
	{
		boolean verificar=false;
		String salida="";
		if (listaColega==null) {
			listaColega.add(colega);
		}else
		{
			for (int i = 0; i < listaColega.size(); i++) {
				
				if (listaColega.get(i).getNombre()==colega.getNombre()) {
					verificar=true;
				}
				
			}//fin del for
			
			if (verificar==true) {
				
				salida="Ya existe un Colega con esos datos";
			}
			else{
				
				listaColega.add(colega);
				salida="El Colega se guardo de manera exitosa";
			}
				
			
		}//fin del else
		
		
		return salida;
	}//fin del metodo agregarPersona
	
	
	public String agregarFamilia(Familia familia)
	{
		boolean verificar=false;
		String salida="";
		if (listaFamilia==null) {
			listaFamilia.add(familia);
		}else
		{
			for (int i = 0; i < listaFamilia.size(); i++) {
				
				if (listaFamilia.get(i).getNombre()==familia.getNombre()) {
					verificar=true;
				}
				
			}//fin del for
			
			if (verificar==true) {
				
				salida="Ya existe un familiar con esos datos";
			}
			else{
				
				listaFamilia.add(familia);
				salida="El familiar se guardo de manera exitosa";
			}
				
			
		}//fin del else
		
		
		return salida;
	}//fin del metodo agregarPersona
	
	
	
	public String agregarLibro(Libro libro)
	{
		String salida="";
		boolean verificar=false;
		if (listaLibros==null) {
			
			listaLibros.add(libro);
		}else{
			
		for (int i = 0; i <listaLibros.size(); i++) {
			
			if (listaLibros.get(i).getTitulo()==libro.getTitulo()) {
				verificar=true;
			}
			
		}//fin del for
			
		if (verificar==true) {
			salida="Ya existe un libro con ese titulo";
		}else
		{
			listaLibros.add(libro);
			
		}//fin del else
		
		
		}//fin de else
		
		
		
		
		return salida;
	}//fin del metodo agregarLibros
	
	
	
	public String controlLibrosPrestados(String titulo,String editorial,int edicion)
	{
		String salida="El libro no se encuentra prestado";
		
		
		for (int i = 0; i < listaLibros.size(); i++) {
			
			if (listaLibros.get(i).getTitulo().equals(titulo)&&listaLibros.get(i).getEditorial().equals(editorial)&&listaLibros.get(i).getEdicion()==(edicion)) {
				if (listaLibros.get(i).getEstadoLibro()==true) {
					salida="El libro se encuentra prestado";
					break;
				}
				
			}//fin del if
			
			
		}//fin del for
		
		return salida;
	}//fin del metodo
	
	public String modificarPersona(String tipoPersona,String id ,String correo,String telefono,String puesto)
	{
		String salida="";
		
		if (tipoPersona.equals("Estudiante")) {
			
			for (int i = 0; i < listaEstudiantes.size(); i++) {
				if (listaEstudiantes.get(i).getCarnet().equals(id)) {
					
					listaEstudiantes.get(i).setCorreo(correo);
					listaEstudiantes.get(i).setTelefono(telefono);
				}
			}//fin del for
		}//fin del if
			
			if (tipoPersona.equals("Colega")) {
				
				for (int i = 0; i < listaColega.size(); i++) {
					if (listaColega.get(i).getIdColega().equals(id)) {
						
						listaColega.get(i).setCorreo(correo);
						listaColega.get(i).setTelefono(telefono);
					}
				}//fin del for
			}//fin del if
			
			
			if (tipoPersona.equals("Familiar")) {
				
				for (int i = 0; i < listaFamilia.size(); i++) {
					if (listaFamilia.get(i).getIdFamilia().equals(id)) {
						
						listaFamilia.get(i).setCorreo(correo);
						listaFamilia.get(i).setTelefono(telefono);
						listaColega.get(i).setPuesto(puesto);
					}
				}//fin del for
			}//fin del if
			
		
		
		
		return salida;
	}//fin del metodo
	
	public String consultarLibroPorUnAtributo(String id, String tipoBusqueda)
	{
		String salida="";
		
		for (int i = 0; i <listaLibros.size(); i++) {
			
		if (tipoBusqueda.equals("Titulo")) {
			
			if (listaLibros.get(i).getTitulo().equals(id)) {
				salida+=listaLibros.get(i).toString()+"\n";
			}//fin del if
		
		}//fin del if
		else
		{
		
			if (tipoBusqueda.equals("Autor")) {
				
				if (listaLibros.get(i).getAutores().equals(id)) {
					salida+=listaLibros.get(i).toString()+"\n";
				}//fin del if
			
			
		}//fin del if
			
		}//fin del else
			
		
if (tipoBusqueda.equals("Editorial")) {
			
			if (listaLibros.get(i).getEditorial().equals(id)) {
				salida+=listaLibros.get(i).toString()+"\n";
			}//fin del if
}//fin del if
			
		}//fin del for
		
		
		return salida;
	}//fin del metodo
	
	
	
	public String consultarLibroPorTresAtributos(String titulo,String autor,String editorial)
	{
		String salida="";
		
		for (int i = 0; i < listaLibros.size(); i++) {
			
			if (listaLibros.get(i).getTitulo().equals(titulo)&&listaLibros.get(i).getAutores().equals(autor)&&listaLibros.get(i).getEditorial().equals(editorial)) {
				salida+=listaLibros.get(i).toString()+"\n";
			}//fin del if
		}//fin del for
		
		
		return salida;
		
	}//fin del metodo
	
	
	public String consultarLibroPrestadoEstudiante(String identificador)
	{
		String salida="";
		
		for (int i = 0; i <listaEstudiantes.size(); i++) {
			
			if (listaEstudiantes.get(i).getListaLibrosEstudiante().get(i)!=null) {
				
				if (listaEstudiantes.get(i).getCarnet().equals(identificador)) {
					salida=listaEstudiantes.get(i).getNombre()+"\n";
					for (int j = 0; j <listaEstudiantes.get(i).getListaLibrosEstudiante().size(); j++) {
						
						salida+=listaEstudiantes.get(i).getListaLibrosEstudiante().get(j).toString();
						
					}//fin del for
				}//fin del if
				
			}//fin del if
			
		}//fin del for
		
		
		return salida;
	}//fin del metodo
	
	
	
	public String consultarLibroPrestadoColega(String identificador)
	{
		String salida="";
				
		for (int i = 0; i <listaColega.size(); i++) {
			
			if (listaColega.get(i).getListaLibrosPrestado().get(i)!=null) {
				
				if (listaColega.get(i).nombre.equals(identificador)) {
					salida=listaColega.get(i).getNombre()+"\n";
					for (int j = 0; j <listaColega.get(i).getListaLibrosPrestado().size(); j++) {
						
						salida+=listaColega.get(i).getListaLibrosPrestado().get(j).toString();
						
					}//fin del for
				}//fin del if
				
			}//fin del if
			
		}//fin del for
		
		
		return salida;
	}//fin del metodo
	
	public String consultarLibroPrestadoFamiliar(String identificador)
	{
		String salida="";
				
		for (int i = 0; i <listaFamilia.size(); i++) {
			
			if (listaFamilia.get(i).getListaLibrosPrestados().get(i)!=null) {
				
				if (listaFamilia.get(i).nombre.equals(identificador)) {
					salida=listaFamilia.get(i).getNombre()+"\n";
					for (int j = 0; j <listaFamilia.get(i).getListaLibrosPrestados().size(); j++) {
						
						salida+=listaFamilia.get(i).getListaLibrosPrestados().get(j).toString();
						
					}//fin del for
				}//fin del if
				
			}//fin del if
			
		}//fin del for
		
		
		return salida;
	}//fin del metodo
	
	
	
	
	public String devolucionDeLibro(String titulo)
	{
		String salida="";
		
		
		for (int i = 0; i <listaColega.size(); i++) {
			
			for (int j = 0; j < listaColega.get(i).getListaLibrosPrestado().size(); j++) {
				
				if (listaColega.get(i).getListaLibrosPrestado().get(i).getTitulo().equals(titulo)) {
					
					listaColega.get(j).getListaLibrosPrestado().remove(j);
					salida="El Libro fue devuelto de manera exitosa";
					break;
				}//fin del if
				
			}//fin del for
		}//fin del for
		
		
for (int i = 0; i <listaEstudiantes.size(); i++) {
			
			for (int j = 0; j < listaEstudiantes.get(i).getListaLibrosEstudiante().size(); j++) {
				
				if (listaEstudiantes.get(i).getListaLibrosEstudiante().get(i).getTitulo().equals(titulo)) {
					
					listaEstudiantes.get(j).getListaLibrosEstudiante().remove(j);
					salida="El Libro fue devuelto de manera exitosa";
					break;
				}//fin del if
				
			}//fin del for
		}//fin del for
		

for (int i = 0; i <listaFamilia.size(); i++) {
	
	for (int j = 0; j < listaFamilia.get(i).getListaLibrosPrestados().size(); j++) {
		
		if (listaFamilia.get(i).getListaLibrosPrestados().get(i).getTitulo().equals(titulo)) {
			
			listaFamilia.get(j).getListaLibrosPrestados().remove(j);
			salida="El Libro fue devuelto de manera exitosa";
			break;
		}//fin del if
		
	}//fin del for
}//fin del for



		
		return salida;
		
	}//fin del metodo
	
	
	
	
	
	
	public void cambiarEstadoLibro(String titulo,boolean estado)
	{
		String salida="";
		
		for (int i = 0; i < listaLibros.size(); i++) {
			
			if (listaLibros.get(i).getTitulo().equals(titulo)) {
				
				listaLibros.get(i).setEstadoLibro(estado);
				listaLibros.get(i).incCantPrestamos();
				
			}//fin del if
			
		}//fin del for
		
		
		
	}//fin del metodo
	
	
	public void agregarMasLibrosAUsuario(String id, Libro libro)
	{
		
for (int i = 0; i <listaColega.size(); i++) {
			
			if (listaColega.get(i).getIdColega().equals(id)) {
				listaColega.get(i).getListaLibrosPrestado().add(libro);
				this.cambiarEstadoLibro(libro.getTitulo(), true);
				break;
				
			}//fin del if
				
		
		}//fin del for
		
		
for (int i = 0; i <listaEstudiantes.size(); i++) {
			if (listaEstudiantes.get(i).getCarnet().equals(id)) {
				listaEstudiantes.get(i).getListaLibrosEstudiante().add(libro);
				this.cambiarEstadoLibro(libro.getTitulo(), true);

				break;
			}///fin del if
			
		}//fin del for
		

for (int i = 0; i <listaFamilia.size(); i++) {
if (listaFamilia.get(i).getIdFamilia().equals(id)) {
	listaFamilia.get(i).getListaLibrosPrestados().add(libro);
	this.cambiarEstadoLibro(libro.getTitulo(), true);

	break;
	
}//fin del if		
		
	
}//fin del for


		
	}//fin del metodo
	
	
	
	
	
	public String librosNoPrestados()
	{
		String salida="";
		
		for (int i = 0; i <listaLibros.size(); i++) {
			
			if (listaLibros.get(i).getEstadoLibro()==false) {
				
				salida+=listaLibros.get(i).toString()+"\n";
			}//fin del if
			
		}//fin del for
		
		return salida;
		
	}//fin del metodo
	
	
	public String librosTopMasPrestados()
	{
		String salida="";
		Libro[]vectorLibro= new Libro[listaLibros.size()];
		Libro[]vectorOrdenado= new Libro[listaLibros.size()];
		
		for (int i = 0; i < listaLibros.size(); i++) {
			
			vectorLibro[i]=listaLibros.get(i);
			
		}//fin del for
		
		vectorOrdenado=Generales.ordenarListaPorPrestamo(vectorLibro);		

		for (int j = 0; j <vectorOrdenado.length; j++) {
			
			
			listaLibros.add(vectorOrdenado[j]);
			if (j>9) {
				salida+=listaLibros.get(j).toString()+"\n";
			}
		}//fin del for
		
		
		
		return salida;
	}//fin del metodo
	
	
}//fin de la clase 

